//使用goroutine启动多个tcp网络协议server
package main

import (
	"bufio"
	"fmt"
	"net"
)

func main() {
	var (
		network = "tcp"
		ipAddr  = "127.0.0.1:9999"
	)
	listenTcp(network, ipAddr)
}
func listenTcp(network, ipAddr string) {
	listener, err := net.Listen(network, ipAddr) //启动服务
	if err != nil {
		fmt.Println("监听失败：", err)
		return
	}
	//与client建立连接(可以连接多个)
	for {
		conn, err := listener.Accept() //建立连接
		if err != nil {
			fmt.Println("建立网络失败：", err)
			continue
		}
		go process(conn) //启动一个goroutine处理连接
	}

}

// 黏包proto包（等待一小段时间才发送）
func process(conn net.Conn) {
	defer conn.Close() //关闭连接

	reader := bufio.NewReader(conn)
	var buf [1024]byte
	for {

		n, err := reader.Read(buf[:]) //读取数据
		if err != nil {
			fmt.Println("读取客户端失败:", err)
			break
		}
		recvStr := string(buf[:n])
		fmt.Println("收到客户端的数据：", recvStr)
		//conn.Write([]byte(recvStr)) //发送数据
	}
}
